
        <html>
			<head>
			     <title>劫持GPS定位&劫持WIFI定位 - lxj616</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/10580">http://drops.wooyun.org/tips/10580</a></h1>
				
      <p>
        <h2>0x00 概述</h2>

<hr />

<p>在刚刚举行的Black Hat Europe 2015大会上，来自阿里移动安全的Wang Kang &amp; Shuhua Chen &amp; Aimin Pan 展示了劫持GPS定位以及劫持WIFI定位的技术</p>

<p>于是我用朋友的Hackrf试了一下</p>

<h2>0x01 GPS劫持步骤</h2>

<hr />

<p>在Ubuntu 15.10中安装gnuradio以及hackrf工具</p>

<pre><code>apt-get install gnuradio gr-osmosdr hackrf
</code></pre>

<!--more-->

<p>请注意，这里目前无法使用kali的hackrf软件包，因为需要-R选项来进行repeat，而kali暂时没有更新hackrf软件包至最新</p>

<p>编译开源的gps模拟工具</p>

<pre><code>git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
make
</code></pre>

<p>设置经纬度并生成数据样本</p>

<pre><code> ./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100
</code></pre>

<p>然后插上Hackrf，开始伪造GPS信号</p>

<pre><code>hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R 
</code></pre>

<p>测试时发现由于Hackrf本身做工问题，只能坚持连续工作5分钟，之后噪声过大导致信噪比无法满足GPS定位的要求，所以大家在测试时一定要等到准备完毕再插上Hackrf，执行命令后立即查看效果</p>

<p>效果如图所示：</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443588322.jpg" alt="enter image description here" /></p>

<p>所有的卫星GPS都是伪造出来的，因此也比较整齐，不够整齐是因为山寨的Hackrf硬件原因</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443512671.jpg" alt="enter image description here" /></p>

<p>这里的坐标我随便定的，定在吉林省了，上文中给出的坐标是杭州</p>

<h2>0x02 WIFI定位劫持步骤</h2>

<hr />

<p>安装aircrack系列工具</p>

<p>apt-get install aircrack-ng -y</p>

<p>安装mdk3</p>

<pre><code>wget ftp://ftp.hu.debian.org/pub/linux/distributions/gentoo/distfiles/mdk3-v6.tar.bz2
tar -jxvf mdk3-v6.tar.bz2
cd mdk3-v6
</code></pre>

<p>这里需要修改一下Makefile</p>

<p>-lpthread 改成 -pthread</p>

<p>之后再编译安装</p>

<pre><code>make
make install
</code></pre>

<p>把以下内容保存为wifi-mdk3.awk</p>

<pre><code>$1 == "BSS" {
 MAC = $2
 wifi[MAC]["enc"] = "Open"
}
$1 == "SSID:" {
 wifi[MAC]["SSID"] = $2
}
$1 == "freq:" {
 wifi[MAC]["freq"] = $NF
}
$1 == "signal:" {
 wifi[MAC]["sig"] = $2 " " $3
}
$1 == "WPA:" {
 wifi[MAC]["enc"] = "WPA"
}
$1 == "WEP:" {
 wifi[MAC]["enc"] = "WEP"
}
END {
 for (BSSID in wifi) {
 printf "%s %s\n",BSSID,wifi[BSSID]["SSID"]
 }
}
</code></pre>

<p>然后扫描wifi（wlan0为无线网卡interface，我自己的是wlp3s0）</p>

<pre><code>sudo iw wlan0 scan |awk -f wifi-mdk3.awk &gt; result.txt
</code></pre>

<p>然后是带着电脑换个没有WIFI的地方，因为要伪造WIFI定位，在自己的地点伪造自己没有效果……而如果身边的真实WIFI过多则会干扰伪造的可信度</p>

<p>开启无线网卡的monitor模式，wlan0是无限网卡的interface</p>

<pre><code>sudo airmon-ng check kill
sudo airmon-ng start wlan0
</code></pre>

<p>然后用mdk3伪造刚才iw scan到ssid 的信号，wlan0-mon是用airmon-ng开出的monitor interface</p>

<pre><code>sudo mdk3 wlan0-mon b -v result.txt
</code></pre>

<p>如果身边没有其他的WIFI，伪造开始之后就可以欺骗WIFI定位了，不过如果身边有其他正常WIFI时，一般情况下很难伪造成功</p>

<h2>0x03 GPS定位与劫持原理</h2>

<hr />

<p>这里是用Hackrf伪造的GPS信号</p>

<p>以下翻译内容摘自https://www.blackhat.com/docs/eu-15/materials/eu-15-Kang-Is-Your-Timespace-Safe-Time-And-Position-Spoofing-Opensourcely-wp.pdf 有删减</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443588613.png" alt="enter image description here" /></p>

<p>1) GPS定位原理</p>

<p>首先，让我们明确我们的需求。我们想要知道的是我们的位置坐标(x,y,z)，如果从一个已知坐标(x1,y1,z1)的点A（这个点在现实情况下是卫星）广播一个信号，比如说光和声音或者电磁波，然后我们试着去测量信号发送至到达的时间差τ1（在gps系统中我们用的是电磁波，我们知道它的速度），然后我们就能得出下面的等式：</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443545170.png" alt="enter image description here" /></p>

<p>这个等式有3个未知变量，因此单单一个等式解不出来，我们可以再加两个已知位置的点（卫星），我们把它们记作(x2,y2,z2) 和 (x3,y3,z3)，然后就是下面的方程组</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443658157.png" alt="enter image description here" /></p>

<p>现在我们就能解出我们的位置(x,y,z)了</p>

<p>但在工程应用中这样还不够。为了测量电磁波发送至到达的时间差τ1，需要在电磁波发送的时候写一个时间戳t1，然后是卫星上的时钟时间参考值，当信号到达我们这里时，我们提取出时间戳t1，然后计算t1和当地时间t2的差值来计算时间差τ1。然而当地时间和卫星时间并不是同步的，会出现一个时间偏移量∆t1，所以这个时间偏移量也要被考虑进去，于是修正后的方程式如下所示：</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443683065.png" alt="enter image description here" /></p>

<p>译者注：所以有4个变量，就需要4个卫星来创造4个等式啦，以下高等数学内容略，以上内容说明我们需要伪造至少4颗卫星的信号才能使gps定位</p>

<p>2) GPS信号帧：GPS信号帧的结构如图所示：</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443692245.png" alt="enter image description here" /></p>

<p>GPS信号的比特率为50 bps。GPS卫星在不同的频率和幅度上广播GPS信号，民用最常用的是L1 信号。</p>

<p>GPS信号的强度非常弱，大约在 -130 dBm 左右，并且大多数GPS接收器在室内不起作用，这就使得GPS信号可以轻易地被嗅探或伪造，至少攻击者不用为了盖过真实的卫星信号去发射大功率信号了</p>

<p>3) BRSC 数据：BRSC（广播星历数据）文件包含了每天独特的GPS卫星ephemeris数据，Ephemeris数据提供了每颗卫星确切的位置信息(xi(t),yi(t),zi(t))，所以接收者就可以以此计算位置数据。你可以以RINEX (与接收器无关的交互格式)格式从ftp://cddis. gsfc.nasa.gov/gnss/data/daily/下载BRDC档案</p>

<p>这些档案按照如下格式命名（如下表所示）：</p>

<p><img src="http://static.wooyun.org//drops/20151119/2015111903443691625.png" alt="enter image description here" /></p>

<p>举个例子：‘brdc3540.14n’意味着2014年的12月20号</p>

<p>译者注：之后是介绍开源项目以及各种sdr平台的使用，由于我只有hackrf，所以把自己用hackrf实际测试的过程和结果放在了0x01部分，如果您有其他sdr平台，请参照原作者文章进行实际测试</p>

<h2>0x04 WIFI定位劫持原理</h2>

<hr />

<p>由于GPS定位在室内无法使用，各种定位平台厂商比如苹果地图、谷歌地图、百度地图通常会使用WIFI信号来帮助用户获得更好的定位</p>

<p>原理很简单，手机的无线芯片可以提供周围热点的扫描结果，最能用来定位的关键信息是SSID和BSSID，SSID是热点的名称，而BSSID则是AP的MAC地址。定位平台厂商搜集SSID及BSSID和GPS数据一起存入他们的数据库，有些时候信息搜集是通过终端用户的手机来实现的，比如在苹果的位置服务问答上写着：</p>

<p>“相反，我们维护了一个在您当前位置附近Wi-Fi热点和基站的数据库，其中一些可能离你的iPhone一百多英里远，来帮助你的iPhone快速准确地计算出当前的位置。如果只用手机GPS来做卫星定位，最多可能会用到几分钟的时间。 iPhone可以缩短这个时间，在短短的几秒钟内通过使用Wi-Fi热点和基站数据快速定位到第二颗GPS卫星，甚至只使用Wi-Fi热点和基站数据进行三角测量来获取其位置，尤其是GPS不可用（如室内或地下室）的时候特别有用。这些计算使用的是由数以千万计的iPhone发送的匿名和加密的附近的Wi-Fi热点和基站的地理标记位置，以产生Wi-Fi热点和基站数据的数据库。 ”</p>

<p>所以，我们要是伪造一些SSID和BSSID会发生什么呢？最简单的方式当然是手动扫描出一堆热点的信心，然后买一大堆路由器来伪造出这些热点，但是这么弄难度有些大，所以我们需要一个更好的办法。</p>

<p>译者注：就是伪造一堆SSID名称和MAC地址，然后这个列表上传到地图数据库作对比，然后就伪造定位了，原文下面是具体的iw scan和mdk3的介绍，就不全部翻译了，经本人实际测试的过程和结果如前文0x02所示</p>

<p>译者再注：要想伪造成功，你伪造出的SSID必须要远远多于正常SSID数目，也就是说你在一个能够WIFI定位的地方要想伪造定位基本不可能成功，因为身边正常的SSID太多了，不过你仍然可以通过手机WIFI连接菜单看到我们伪造出的SSID名称，能看到名称就说明实验原理成功了</p>

<h2>0x05 参考文献&amp;致谢</h2>

<hr />

<p>《Time and Position Spoofing with Open Source Projects》 Kang Wang ，Shuhua Chen ，Aimin Pan</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/16.jpg">1</a> Dong L. IF GPS signal simulator development and veriﬁcation[M]. National Library of Canada= Bibliothque nationale du Canada, 2005.</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/22.jpg">2</a> Akos, D. M. (1997), A Software Radio Approach To Global Navigation Satellite System Receiver Design, Dissertation, Ohio University.</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/320.png">3</a> Kaplan, E. D. (1996), Understanding GPS, Principles and Applications, Boston: Artech House, Inc.</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/419.png">4</a> https://play.google.com/store/apps/details?id=com.chartcross.gpstest</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/513.png">5</a> http://www.pseudocode.info/post/50127404555/ beacons-beacons-everywhere-using-mdk3-for-ssid</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/610.png">6</a> https://github.com/osqzss/gps-sdr-sim</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/79.png">7</a> https://en.wikipedia.org/wiki/Global Positioning System</p>

<p><a href="http://drops.wooyun.org/wp-content/uploads/2015/11/87.png">8</a> https://en.wikipedia.org/wiki/GPS signals</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          